pacman::p_load(
            ## data manipulation
            readxl,
            DT,
            dplyr,
            lubridate,
            tidyr,
            haven,
            stringr,
            ## data analysis
            ## data visualization
            ggplot2,
            ggthemes,
            patchwork
        )
dat_casos <-
    readxl::read_xls(
                "1_Casos incluidos_codigos_23_05.xls",
                sheet='Casos',
                col_types=c(rep('guess', 7), 'date',
                            rep('guess', 3), 'date', 
                            rep('guess', 13),
                            rep('date',  2),
                            rep('guess', 4),
                            rep('date',  2),
                            rep('guess', 2),
                            rep('date',  2),
                            rep('guess', 19), 'date',
                            rep(c('guess', 'date'), 23),
                            rep('guess', 3),
                            rep('numeric', 2), 'guess',
                            rep(c('guess', 'date'), 23),
                            rep('guess', 3), 'date',
                            rep('guess', 162-159))
            )
dat_ct <- readxl::read_xls(
                      "1_Casos incluidos_codigos_23_05.xls", sheet='CT'
                  )
## DT::datatable(
##         dat_casos,
##         options=list(pageLength=6),
##         class='cell-border stripe',
##         rownames=FALSE
##     )
## DT::datatable(
##         dat_ct,
##         options=list(pageLength=6),
##         class='cell-border stripe',
##         rownames=FALSE)

Análise descritiva


Idade e medidas binárias

dat_casos <-
    dat_casos|>
    dplyr::mutate(
               idade=(dat_casos$'DATA COLETA' - DN)/lubridate::dyears()
           )
box_idade <- 
    ggplot(dat_casos, aes(x=NA, y=idade))+
    geom_boxplot()+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title=paste('Boxplot das', nrow(dat_casos), 'idades'))+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_sexo <-
    dat_casos|>
    dplyr::mutate(
               Sexo=dplyr::recode(Sexo,
                                  F=paste(table(Sexo)[1], 'femininos'),
                                  M=paste(table(Sexo)[2], 'masculinos'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~Sexo)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por sexo')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_pcomo <-
    dat_casos|>
    dplyr::mutate(
               pcomorbidade=dplyr::recode(
                                       pcomorbidade,
                                       '0'=paste(table(pcomorbidade)[1],
                                                 'sem comorbidade'),
                                       '1'=paste(table(pcomorbidade)[2],
                                                 'com comorbidade'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~pcomorbidade)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por comorbidade')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_inter <-
    dat_casos|>
    dplyr::mutate(
               Internou=dplyr::recode(Internou,
                                      '0'=paste(table(Internou)[1],
                                                'não internaram'),
                                      '1'=paste(table(Internou)[2],
                                                'internaram'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~Internou)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por internação')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_uti <-
    dat_casos|>
    dplyr::mutate(
               UTI=dplyr::recode(
                              UTI,
                              '0'=paste(table(UTI)[1], 'fora de UTI'),
                              '1'=paste(table(UTI)[2], 'em UTI'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~UTI)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por necessidade de UTI')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_vm <-
    dat_casos|>
    dplyr::mutate(
               VM=dplyr::recode(VM,
                                '0'=paste(table(VM)[1], 'em VM'),
                                '1'=paste(table(VM)[2], 'fora de VM'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~VM)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por uso de VM')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
box_contato <-
    dat_casos|>
    dplyr::mutate(
               contato=CONTATO_CONFIRMADO_OU_SUSPEITO,
               contato=dplyr::recode(contato,
                                     '0'=paste(table(contato)[1],
                                               'sem contato'),
                                     '1'=paste(table(contato)[2],
                                               'com contato'),
                                     '9'=paste(table(contato)[3],
                                               'não disponível'))
           )|>
    ggplot(aes(x=NA, y=idade))+
    geom_boxplot()+
    facet_wrap(~contato)+
    geom_jitter(size=4/3, alpha=0.5)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title='por contato confirmado')+
    theme_fivethirtyeight(base_size=13)+
    theme(
        axis.text.x=element_blank()
    )
layout <- "
AAABBB
CCCDDD
EEEFFF
#GGGG#
"
box_idade+
    box_sexo+
    box_pcomo+
    box_inter+
    box_uti+
    box_vm+
    box_contato+patchwork::plot_layout(design=layout)

Idades segredadas pelas medidas

box_wrap1 <-
    dat_casos|>
    dplyr::mutate(UTI=dplyr::recode(UTI,
                                    '0'='Fora de UTI', '1'='Em UTI'), 
                  pcomorbidade=dplyr::recode(pcomorbidade,
                                             '0'='Sem comorbidade', 
                                             '1'='Com comorbidade'), 
                  Internou=dplyr::recode(Internou,
                                         '0'='& sem internação',
                                         '1'='& internação'), 
                  VM=dplyr::recode(VM, '0'='Fora de VM', '1'='Em VM')
                  )|>
    ggplot(aes(x=UTI, y=idade))+
    geom_boxplot(outlier.shape=NA)+
    facet_wrap(~pcomorbidade+Internou, nrow=1, scales='free_x')+
    geom_jitter(aes(color=VM), size=4/2, alpha=0.75)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title=paste('Boxplot das', nrow(dat_casos), 'idades por',
                     '\npresença de comorbidade,',
                     'necessidade de internação, UTI e VM'))+
    theme_fivethirtyeight(base_size=14)+
    theme(
        legend.position='none'
    )
box_wrap2 <-
    dat_casos|>
    dplyr::mutate(contato=CONTATO_CONFIRMADO_OU_SUSPEITO,
                  contato=dplyr::recode(contato,
                                        '0'='Sem contato',
                                        '1'='Com contato',
                                        '9'='Não disponível'),
                  pcomorbidade=dplyr::recode(pcomorbidade,
                                             '0'='Sem comorbidade', 
                                             '1'='Com comorbidade'),
                  Internou=dplyr::recode(Internou,
                                         '0'='& sem internação',
                                         '1'='& internação'),
                  UTI=dplyr::recode(UTI, '0'='Fora de UTI', '1'='Em UTI')
                  )|>
    ggplot(aes(x=contato, y=idade))+
    geom_boxplot(outlier.shape=NA)+
    facet_wrap(~pcomorbidade+Internou, nrow=1)+
    geom_jitter(aes(color=UTI), size=4/2, alpha=0.75)+
    stat_summary(fun=mean, geom='point', size=4, color='red')+
    labs(title=paste('presença de comorbidade,',
                     '\nnecessidade de internação, UTI, e',
                     'contato confirmado ou suspeito'))+
    theme_fivethirtyeight(base_size=14)+
    theme(
        legend.title=element_blank(),
        axis.text.x=element_text(angle=15, vjust=0.75)
    )
box_wrap1/box_wrap2

Comorbidades

dat_comor <-
    dat_casos|>
    dplyr::filter(pcomorbidade==1)|>
    dplyr::select(scomorbidade1:scomorbidade3)|>
    dplyr::mutate(id=haven::as_factor(1:n()),
                  scomorbidade2=dplyr::na_if(scomorbidade2, 0), 
                  scomorbidade3=dplyr::na_if(scomorbidade3, 0))|>
    tidyr::pivot_longer(!id,
                        names_to='sistema', values_to='comorbidade',
                        values_drop_na=TRUE)|>
    dplyr::mutate(comorbidade=stringr::str_to_sentence(comorbidade))
comorSum <-
    dplyr::summarize(dplyr::group_by(dat_comor, comorbidade),
                     av_data=length(id), id='Total')
idSum <-
    dplyr::summarize(dplyr::group_by(dat_comor, id),
                     av_data=length(id), comorbidade='Total')

ggplot(dat_comor, aes(x=comorbidade, y=id))+
    geom_bin2d(fill='#8A8D8F', alpha=0.7)+
    scale_x_discrete(
        limits=c(levels(as.factor(dat_comor$comorbidade)), 'Total')
    )+
    scale_y_discrete(limits=c('Total', rev(unique(dat_comor$id))))+
    geom_point(
        data=idSum, color='#FF8200', alpha=0.6, size=7, shape=15
    )+
    geom_point(
        data=comorSum, color='#FF8200', alpha=0.6, size=7, shape=15
    )+
    geom_text(data=idSum, aes(label=av_data))+
    geom_text(data=comorSum, aes(label=av_data))+
    labs(title='Comorbidades por paciente')+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.text.x=element_text(angle=30, vjust=0.6))

Comorbidades segregadas

col_comor <-
    comorSum|>
    dplyr::arrange(av_data)|>
    dplyr::mutate(comorbidade=haven::as_factor(comorbidade))|>
    ggplot(aes(y=comorbidade, x=av_data))+
    geom_col(color='#8A8D8F', alpha=0.7)+
    geom_text(aes(label=av_data), hjust=-0.5)+
    xlim(c(0, 24))+
    labs(title=paste0(nrow(idSum), ' pacientes, \n',
                      sum(comorSum$av_data), ' comorbidades')
         )+
    theme_fivethirtyeight(base_size=14)

ids1 <-
    idSum|>
    dplyr::filter(av_data==1)|>
    dplyr::pull(id)
col_comor1 <-
    dat_comor|>
    dplyr::filter(id%in%ids1)|>
    dplyr::count(comorbidade)|>
    dplyr::arrange(n)|>
    dplyr::mutate(comorbidade=haven::as_factor(comorbidade))|>
    ggplot(aes(y=comorbidade, x=n))+
    geom_col(color='#8A8D8F', alpha=0.7)+
    geom_text(aes(label=n), hjust=-0.5)+
    xlim(c(0, 16))+
    labs(title=paste0(length(ids1), ' com\n', '1 comorbidade'))+
    theme_fivethirtyeight(base_size=14)

ids23 <-
    idSum|>
    dplyr::filter(av_data>1)|>
    dplyr::pull(id)
dat_comor23 <-
    dat_comor|>
    dplyr::filter(id%in%ids23)|>
    dplyr::mutate(id=factor(id))
col_comor23 <-
    dat_comor23|>
    dplyr::count(comorbidade)|>
    dplyr::arrange(n)|>
    dplyr::mutate(comorbidade=haven::as_factor(comorbidade))|>
    ggplot(aes(y=comorbidade, x=n))+
    geom_col(color='#8A8D8F', alpha=0.7)+
    geom_text(aes(label=n), hjust=-0.5)+
    xlim(c(0, 9))+
    theme_fivethirtyeight(base_size=14)

ids23order <-
    dat_comor23|>dplyr::count(id, sort=TRUE)|>
    dplyr::mutate(id=haven::as_factor(id))|>
    dplyr::pull(id)
bar_comor23 <-
    dat_comor23|>
    dplyr::mutate(
               id=factor(id, levels=ids23order), Comorbidade=comorbidade
           )|>
    ggplot(aes(x=id, fill=Comorbidade))+
    geom_bar(alpha=0.75)+
    labs(title=paste(length(ids23), 'com +1 comorbidades'))+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.title=element_blank(),
          axis.text.x=element_blank())
layout <- "
AABB
CDDD
"
col_comor+col_comor1+col_comor23+bar_comor23+
    patchwork::plot_layout(design=layout)

Tempo do início dos sintomas

bar_temponum <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=factor(as.numeric(tempo)))|>
    ggplot(aes(y=tempo))+
    geom_bar(color='#8A8D8F', alpha=0.7)+
    geom_text(stat='count', aes(label=..count..), hjust=-0.5)+
    xlim(c(0, 50))

bar_tempocha <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(!stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=stringr::str_to_sentence(tempo))|>
    ggplot(aes(y=tempo))+
    geom_bar(color='#8A8D8F', alpha=0.7)+
    geom_text(stat='count', aes(label=..count..), hjust=-0.5)+
    xlim(c(0, 40))

(bar_temponum/bar_tempocha)+
    plot_layout(heights=c(3.5, 1))+
    plot_annotation(
        title=paste('Dias a partir do início dos sintomas,',
                    '\npara os', nrow(dat_casos), 'pacientes')
    )&theme_fivethirtyeight(base_size=13)

Tempos segregados

bar_temponumComor <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=factor(as.numeric(tempo)), 
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem', '1'='Com')
                  )|>
    ggplot(aes(y=tempo, fill=Comorbidade))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )

bar_tempochaComor <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(!stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=stringr::str_to_sentence(tempo), 
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem', '1'='Com')
                  )|>
    ggplot(aes(y=tempo, fill=Comorbidade))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )

(bar_temponumComor/bar_tempochaComor)+
    patchwork::plot_layout(heights=c(3.5, 1), guides='collect')+
    patchwork::plot_annotation(
        title=paste('Dias a partir início dos sintomas,',
                    'por presença de comorbidade', sep='\n')
    )&theme_fivethirtyeight(base_size=13)

bar_temponumInter <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=factor(as.numeric(tempo)), 
                  Internação=dplyr::recode(Internou,
                                           '0'='Não', '1'='Sim')
                  )|>
    ggplot(aes(y=tempo, fill=Internação))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )

bar_tempochaInter <-
    dat_casos|>
    dplyr::mutate(tempo=tempo_inicio_sintomas)|>
    dplyr::filter(!stringr::str_detect(tempo, '[0-9]'))|>
    dplyr::mutate(tempo=stringr::str_to_sentence(tempo), 
                  Internação=dplyr::recode(Internou,
                                           '0'='Não', '1'='Sim')
                  )|>
    ggplot(aes(y=tempo, fill=Internação))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )

(bar_temponumInter/bar_tempochaInter)+
    patchwork::plot_layout(heights=c(3.5, 1), guides='collect')+
    patchwork::plot_annotation(
        title=paste('Dias a partir do início dos sintomas,',
                    'por necessidade de internação', sep='\n')
    )&theme_fivethirtyeight(base_size=13)

Raio-X e tomografia

tile_xray <-    
    xtabs(~RAIOX1+RAIOX2, dat_casos)|>
    tibble::as_tibble()|>
    dplyr::mutate(n=factor(n),
                  Primeira=factor(RAIOX1),
                  Primeira=dplyr::recode(Primeira,
                                         '1'='Normal',
                                         '2'='Infiltrado instersticial',
                                         '3'='Condensação opacidade',
                                         '4'='Hiperinsuflação',
                                         '5'='Outro',
                                         '6'='Não realizado'),
                  Segunda=factor(RAIOX2),
                  Segunda=dplyr::recode(Segunda,
                                        '1'='Normal',
                                        '2'='Infiltrado instersticial',
                                        '3'='Condensação opacidade',
                                        '4'='Hiperinsuflação',
                                        '5'='Outro',
                                        '6'='Não realizado')
                  )|>
    ggplot(aes(x=Primeira, y=Segunda, fill=n))+
    geom_tile(color='black', size=0.5, alpha=0.6)+
    geom_text(aes(label=n))+
    labs(title=paste0('Raio-X tórax,\n', nrow(dat_casos), ' pacientes'))+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.title.x=element_text(),
          axis.title.y=element_text(),
          axis.text.x=element_text(angle=30, vjust=0.5))+
    scale_fill_brewer(palette='Spectral', direction=-1)+
    coord_fixed()

tile_tomo <-
    xtabs(~TOMO1+TOMO2, dat_casos)|>
    tibble::as_tibble()|>
    dplyr::mutate(n=factor(n),
                  Primeira=factor(TOMO1),
                  Primeira=dplyr::recode(Primeira,
                                         '1'='Normal',
                                         '2'='Infiltrado instersticial',
                                         '3'='Condensação opacidade',
                                         '4'='Vidro fosco',
                                         '5'='Outro',
                                         '6'='Não realizado'),
                  Segunda=factor(TOMO2),
                  Segunda=dplyr::recode(Segunda,
                                        '1'='Normal',
                                        '2'='Infiltrado instersticial',
                                        '3'='Condensação opacidade',
                                        '4'='Vidro fosco',
                                        '5'='Outro',
                                        '6'='Não realizado')
                  )|>
    ggplot(aes(x=Primeira, y=Segunda, fill=n))+
    geom_tile(color='black', size=0.5, alpha=0.6)+
    geom_text(aes(label=n))+
    labs(title=paste0('Tomografia,\n', nrow(dat_casos), ' pacientes'))+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.title.x=element_text(), 
          axis.title.y=element_text(),
          axis.text.x=element_text(angle=30, vjust=0.5))+
    scale_fill_brewer(palette='Spectral', direction=-1)+
    coord_fixed()

tile_xray|tile_tomo

PCR

line_pcr <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('PCR', 1:8)))|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='PCR', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=dplyr::if_else(
                                   valor%in%c('INFERIOR 5'), '0', valor
                               ),
                  valor=as.numeric(valor),
                  PCR=factor(PCR)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=PCR, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='PCRs')

line_pcrComor <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('PCR', 1:8)), pcomorbidade)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(dplyr::starts_with('PCR'),
                        names_to='PCR', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=dplyr::if_else(
                                   valor%in%c('INFERIOR 5'), '0', valor
                               ),
                  valor=as.numeric(valor),
                  PCR=factor(PCR),
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem comorbidade',
                                            '1'='Com comorbidade'))|>
    tidyr::drop_na()|>
    ggplot(aes(x=PCR, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='por presença de comorbidade')+
    facet_wrap(~Comorbidade, scales='free')

line_pcr/line_pcrComor

VHS

line_vhs <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('VHS', 1:4)))|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='VHS', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  VHS=factor(VHS)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=VHS, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='VHSs')

line_vhsComor <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('VHS', 1:4)), pcomorbidade)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(dplyr::starts_with('VHS'),
                        names_to='VHS', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  VHS=factor(VHS),
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem comorbidade',
                                            '1'='Com comorbidade')
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=VHS, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='por presença de comorbidade')+
    facet_wrap(~Comorbidade, scales='free')

line_vhs/line_vhsComor

Dímero-D

line_dime <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('Dímero-D', 1:8)))|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='DímeroD', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  DímeroD=factor(DímeroD)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=DímeroD, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='Dímero-Ds')

line_dimeComor <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('Dímero-D', 1:8)), pcomorbidade)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(dplyr::starts_with('Dímero-D'),
                        names_to='DímeroD', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  DímeroD=factor(DímeroD),
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem comorbidade',
                                            '1'='Com comorbidade')
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=DímeroD, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='Dímero-Ds por presença de comorbidade')+
    facet_wrap(~Comorbidade, scales='free')

line_dime/line_dimeComor

Município

dat_casos|>
    dplyr::mutate(Município=factor(stringr::str_to_title(Município)),
                  Município=factor(Município,
                                   levels=rev(levels(Município))), 
                  Internação=dplyr::recode(Internou,
                                           '0'='Não', '1'='Sim')
                  )|>    
    ggplot(aes(y=Município, fill=Internação))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )+
    theme_fivethirtyeight(base_size=14)+
    labs(title=paste('Município dos', nrow(dat_casos), 'pacientes,',
                     '\npor necessidade de internação'))

Sinais clínicos

sinaisc <-
    dat_casos|>
    dplyr::select(FEBRE:OUTRO, Internou)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!c(id, Internou, OUTRO),
                        names_to='sinal', values_to='presença')|>
    dplyr::mutate(sinal=stringr::str_to_title(sinal),
                  Internação=dplyr::recode(Internou,
                                           '0'='Não', '1'='Sim'))
sinaiscTable <- 
    sinaisc|>
    dplyr::filter(presença==1)|>
    dplyr::count(sinal)|>
    dplyr::arrange(n)|>
    dplyr::mutate(sinal=haven::as_factor(sinal))

sinallevels <- levels(sinaiscTable$sinal)

ggplot(sinaiscTable, aes(y=sinal, x=n))+
    geom_col(color='#8A8D8F', alpha=0.7)+
    geom_text(aes(label=n), hjust=-0.5)+
    xlim(c(0, 190))+
    labs(
        title=paste('Sinais clínicos dos', nrow(dat_casos), 'pacientes')
    )+
    theme_fivethirtyeight(base_size=13)

Sinais clínicos por internação

sinaisc|>
    dplyr::filter(presença==1)|>
    dplyr::mutate(sinal=factor(sinal, levels=rev(sinallevels)))|>
    ggplot(aes(y=sinal, fill=Internação))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )+
    labs(title=paste('Sinais clínicos dos', nrow(dat_casos),
                     'pacientes,', '\npor necessidade de internação'))+
    theme_fivethirtyeight(base_size=13)

Outros sinais clínicos

sinaiscoutroTable <-
    sinaisc|>
    dplyr::mutate(outro=dplyr::na_if(OUTRO, 0),
                  outro=dplyr::recode(outro, '9'='Não disponível'),
                  outro=stringr::str_to_sentence(outro)
                  )|>
    tidyr::drop_na()|>
    dplyr::count(outro)|>
    dplyr::arrange(n)|>
    dplyr::mutate(outro=haven::as_factor(outro))

sinaloutrolevels <- levels(sinaiscoutroTable$outro)

sinaisc|>
    dplyr::mutate(outro=dplyr::na_if(OUTRO, 0),
                  outro=dplyr::recode(outro, '9'='Não disponível'),
                  outro=stringr::str_to_sentence(outro)
                  )|>
    tidyr::drop_na()|>
    dplyr::mutate(outro=factor(outro, levels=sinaloutrolevels))|>
    ggplot(aes(y=outro, fill=Internação))+
    geom_bar(alpha=0.75)+
    labs(title=paste('Sinais clínicos dos', nrow(dat_casos),
                     'pacientes,', '\npor necessidade de internação'))+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5)
    )+
    theme_fivethirtyeight(base_size=14)

Combinações dos “outros”

dat_casos|>
    dplyr::select(FEBRE:AGEUSIA)|>
    dplyr::group_by_all()|>
    dplyr::tally()|>
    dplyr::filter(n>1)|>
    tibble::as_tibble()|>
    dplyr::mutate(profile=as.character(1:dplyr::n()))|>
    tidyr::pivot_longer(
               !c(profile, n), names_to='sinal', values_to='status'
           )|>
    dplyr::filter(status==1)|>
    dplyr::arrange(desc(n))|>
    dplyr::mutate(profile=haven::as_factor(profile),
                  profile=factor(
                      profile, labels=c(1:length(levels(profile)))
                  ),
                  sinal=stringr::str_to_sentence(sinal),
                  sinal=haven::as_factor(sinal)
                  )|>
    ggplot(aes(x=n, y=profile, fill=sinal))+
    geom_col(alpha=0.75)+
    geom_text(aes(label=n), position=position_stack(0.5))+
    theme_fivethirtyeight()+
    theme(legend.title=element_blank())+
    labs(title='Combinações de estados clínicos com frequência > 1')

dat_casos|>
    dplyr::select(FEBRE:AGEUSIA, Internou)|>
    dplyr::group_by_all()|>
    dplyr::tally()|>
    dplyr::filter(n>1)|>
    tibble::as_tibble()|>
    dplyr::mutate(profile=as.character(1:dplyr::n()))|>
    tidyr::pivot_longer(!c(profile, n, Internou),
                        names_to='sinal', values_to='status')|>
    dplyr::filter(status==1)|>
    dplyr::arrange(desc(n))|>
    dplyr::mutate(profile=haven::as_factor(profile),
                  profile=factor(
                      profile, labels=c(1:length(levels(profile)))
                  ),
                  sinal=stringr::str_to_sentence(sinal),
                  sinal=haven::as_factor(sinal),
                  Internação=dplyr::recode(Internou,
                                           '0'='Sem internação',
                                           '1'='Com internação')
                  )|>
    ggplot(aes(x=n, y=profile, fill=sinal))+
    geom_col(alpha=0.75)+
    facet_wrap(~Internação, scales='free')+
    geom_text(aes(label=n), position=position_stack(0.5))+
    theme_fivethirtyeight()+
    theme(legend.title=element_blank())+
    labs(title=paste(
             'Combinações de estados clínicos com frequência > 1,',
             '\npor necessidade de internação'))

Linfócitos e neutrófilos

dat_casos|>
    dplyr::select(linfócitos, neutrófilos)|>
    tidyr::gather(key, value)|>
    dplyr::mutate(value=dplyr::recode(value,
                                      '0'='Normal',
                                      '1'='Diminuído',
                                      '2'='Aumentado',
                                      '9'='Não disponível'),
                  key=stringr::str_to_title(key))|>
    ggplot(aes(x=value, fill=key))+
    geom_bar(position='dodge', alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_dodge(1),
        vjust=-1
    )+
    labs(title='Linfócitos e neutrófilos')+
    ylim(c(0, 200))+
    theme_fivethirtyeight()+
    scale_fill_fivethirtyeight()+
    theme(legend.title=element_blank())

bar_linfneut <-
    dat_casos|>
    dplyr::select(linfócitos, neutrófilos)|>
    tidyr::gather(key, value)|>
    dplyr::mutate(value=dplyr::recode(value,
                                      '0'='Normal',
                                      '1'='Diminuído',
                                      '2'='Aumentado',
                                      '9'='Não disponível'),
                  key=stringr::str_to_title(key),
                  key=factor(key, levels=rev(unique(key)))
                  )|>
    ggplot(aes(y=key, fill=value))+
    geom_bar(alpha=0.75)+
    geom_text(
        stat='count', aes(label=..count..), position=position_stack(0.5),
    )+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.title=element_blank())

line_linf <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('linfócitos', 1:11)))|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='linfócitos', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  linfócitos=factor(linfócitos)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=linfócitos, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.text.x=element_text(angle=45, vjust=0.6))+
    labs(title='Linfócitos')

line_neut <-
    dat_casos|>
    dplyr::select(dplyr::one_of(paste0('neutrófilos', 1:11)))|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='neutrófilos', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  neutrófilos=factor(neutrófilos)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=neutrófilos, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.text.x=element_text(angle=45, vjust=0.6))+
    labs(title='Neutrófilos')

bar_linfneut/(line_linf|line_neut)+patchwork::plot_layout(heights=c(1, 2))

por comorbidade

line_linfComor <-
    dat_casos|>
    dplyr::select(
               dplyr::one_of(paste0('linfócitos', 1:11)), pcomorbidade
           )|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(dplyr::starts_with('linfócitos'),
                        names_to='linfócitos', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  linfócitos=factor(linfócitos),
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem comorbidade',
                                            '1'='Com comorbidade')
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=linfócitos, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.text.x=element_text(angle=45, vjust=0.6))+
    labs(title='Linfócitos por presença de comorbidade')+
    facet_wrap(~Comorbidade, scales='free')

line_neutComor <-
    dat_casos|>
    dplyr::select(
               dplyr::one_of(paste0('neutrófilos', 1:11)), pcomorbidade
           )|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(dplyr::starts_with('neutrófilos'),
                        names_to='neutrófilos', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'),
                  valor=as.numeric(valor),
                  neutrófilos=factor(neutrófilos),
                  Comorbidade=dplyr::recode(pcomorbidade,
                                            '0'='Sem comorbidade',
                                            '1'='Com comorbidade')
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=neutrófilos, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    ## geom_line()+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none',
          axis.text.x=element_text(angle=45, vjust=0.6))+
    labs(title='Neutrófilos por presença de comorbidade')+
    facet_wrap(~Comorbidade, scales='free')

line_linfComor/line_neutComor

igs

line_iga <-
    dat_casos|>
    dplyr::select(iga1, iga2)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='iga', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'), 
                  valor=dplyr::if_else(valor%in%c('Inferior a 10'),
                                       '0',
                                       valor),
                  valor=as.numeric(valor),
                  iga=factor(iga)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=iga, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='iga')

line_igg <-
    dat_casos|>
    dplyr::select(igg1, igg2)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='igg', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'), 
                  valor=as.numeric(valor),
                  igg=factor(igg)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=igg, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='igg')

line_igm <-
    dat_casos|>
    dplyr::select(igm1, igm2)|>
    dplyr::mutate(id=factor(1:dplyr::n()))|>
    tidyr::pivot_longer(!id, names_to='igm', values_to='valor')|>
    dplyr::mutate(valor=dplyr::na_if(valor, 'NR'), 
                  valor=dplyr::if_else(valor%in%c('Inferior a 20'),
                                       '0',
                                       valor),
                  valor=as.numeric(valor),
                  igm=factor(igm)
                  )|>
    tidyr::drop_na()|>
    ggplot(aes(x=igm, y=valor, group=id, color=id, fill=id))+
    geom_area(alpha=0.30, size=1.25, position=position_dodge(0))+
    geom_point(size=2)+
    theme_fivethirtyeight(base_size=14)+
    theme(legend.position='none')+
    labs(title='igm')

line_iga|line_igg|line_igm

Modelo